【项目实战】Java POI之Word导出经典案例一 - 好的程序员即使在过单行道时也总是会环顾两边 - 博客频道 - CSDN.NET

创建时间:2017/5/27 18:39
来源:http://blog.csdn.net/zsq520520/article/details/53538301


2016-12-09 14:50 1093人阅读 评论(3) 收藏 举报
.

版权声明:【本文为博主原创文章或收集整理,未经博主允许不得转载】

最近项目中需要用到数据的导出到Word,本在项目中使用POI将数据导入到Word,和Excel导出类似,先将jar包导入进去(我这里就省去导jar包啦),我直接上实现过程吧!

1、导入POI jar包;

2、创建新的Word模板,如下图:


3、JSP页面按钮定义如下:

[javascript] view plain copy
print?
  1. <button type="button" onclick="toInsuranceExcel()" class="button button-primary button-small">导出Word </button>  

4、JS中点击事件(包括参数传递、发送请求)代码如下:

[javascript] view plain copy
print?
  1. /* 导出Word */  
  2. function toInsuranceExcel(){  
  3.     var curpagenum = $('#contentGroupOrderTable').getGridParam('page');  
  4.     $("#page").val(curpagenum);  
  5.     var startTime=$('#startTime').val();  
  6.     var endTime=$('#endTime').val();  
  7.     var receiveMode=$('#receiveMode').val();  
  8.     var groupCode=$('#groupCode').val();  
  9.     var supplierName=$('#supplierName').val();  
  10.   
  11.     var orgIds=$('#orgIds').val();  
  12.     var orgNames=$('#orgNames').val();  
  13.     var operType=$('#operType').val();  
  14.     var saleOperatorIds=$('#saleOperatorIds').val();  
  15.     var saleOperatorName=$('#saleOperatorName').val();  
  16.   
  17.     var orderMode=$('#dicIds').val();  
  18.     var remark=$('#remark').val();  
  19.     var page=$('#page').val();  
  20.     var pageSize=$('#pageSize').val();  
  21.     var userRightType=$('#userRightType').val();  
  22.   
  23.     var guestName=$('#guestName').val();  
  24.     var gender=$('#gender').val()  
  25.     var ageFirst=$('#ageFirst').val()  
  26.     var ageSecond=$('#ageSecond').val()  
  27.     var nativePlace=$('#nativePlace').val()  
  28.   
  29.     window.location ='../taobao/downloadInsure.htm?startTime='+startTime  
  30.         +"&endTime="+endTime  
  31.         +"&receiveMode="+receiveMode  
  32.         +"&groupCode="+groupCode  
  33.         +"&supplierName="+supplierName  
  34.         +"&orgIds="+orgIds  
  35.         +"&orgNames="+orgNames  
  36.         +"&operType="+operType  
  37.         +"&saleOperatorIds="+saleOperatorIds  
  38.         +"&saleOperatorName="+saleOperatorName  
  39.         +"&orderMode="+orderMode  
  40.         +"&remark="+remark  
  41.         +"&page="+page  
  42.         +"&pageSize="+pageSize  
  43.         +"&userRightType="+userRightType  
  44.         +"&guestName="+guestName  
  45.         +"&gender="+gender  
  46.         +"&ageFirst="+ageFirst  
  47.         +"&ageSecond="+ageSecond  
  48.         +"&nativePlace="+nativePlace;  
  49. }  

5、Java后台Controller代码实现方法如下:

  1. /** 
  2.      * 投保单 
  3.      *  
  4.      * @param groupId 
  5.      * @param request 
  6.      * @param response 
  7.      */  
  8.     @RequestMapping("downloadInsure.htm")  
  9.     public void downloadInsureFile(HttpServletRequest request, HttpServletResponse response,       
  10.             String startTime,String endTime,String receiveMode,String groupCode,String supplierName,  
  11.             String orgIds,String orgNames,String operType,String saleOperatorIds,String saleOperatorName,  
  12.             String orderMode,String remark,Integer page,Integer pageSize,Integer userRightType,  
  13.             String guestName,Integer gender,Integer ageFirst,Integer ageSecond,String nativePlace){  
  14.         try {  
  15.             // 处理中文文件名下载乱码  
  16.             request.setCharacterEncoding("UTF-8");  
  17.         } catch (UnsupportedEncodingException e1) {  
  18.             e1.printStackTrace();  
  19.         }  
  20.         String path = "";  
  21.         String fileName = "";  
  22.   
  23.         // 投保书  
  24.         try {  
  25.             fileName = new String("投保书.doc".getBytes("UTF-8"), "iso-8859-1");  
  26.         } catch (UnsupportedEncodingException e) {  
  27.             e.printStackTrace();  
  28.         }  
  29.         path = saleInsurance( request,  response,   startTime, endTime, receiveMode, groupCode, supplierName,  
  30.                  orgIds, orgNames, operType, saleOperatorIds, saleOperatorName,  
  31.                  orderMode, remark, page, pageSize, userRightType,  
  32.                  guestName, gender, ageFirst, ageSecond, nativePlace);  
  33.   
  34.         response.setCharacterEncoding("utf-8");  
  35.         response.setContentType("application/msword"); // word格式  
  36.         try {  
  37.             response.setHeader("Content-Disposition""attachment; filename=" + fileName);  
  38.             File file = new File(path);  
  39.             InputStream inputStream = new FileInputStream(file);  
  40.             OutputStream os = response.getOutputStream();  
  41.             byte[] b = new byte[10240];  
  42.             int length;  
  43.             while ((length = inputStream.read(b)) > 0) {  
  44.                 os.write(b, 0, length);  
  45.             }  
  46.             inputStream.close();  
  47.             os.flush();  
  48.             os.close();  
  49.             file.delete();  
  50.         } catch (FileNotFoundException e) {  
  51.             e.printStackTrace();  
  52.         } catch (IOException e) {  
  53.             e.printStackTrace();  
  54.         }  
  55.     }  


调用的saleInsurance方法如下:

  1. /** 
  2.     *投保书 
  3.     *  
  4.     * @param request 
  5.     * @param orderId 
  6.     * @return 
  7.     */  
  8.    public String saleInsurance(HttpServletRequest request, HttpServletResponse response,       
  9.         String startTime,String endTime,String receiveMode,String groupCode,String supplierName,  
  10.         String orgIds,String orgNames,String operType,String saleOperatorIds,String saleOperatorName,  
  11.         String orderMode,String remark,Integer page,Integer pageSize,Integer userRightType,  
  12.         String guestName,Integer gender,Integer ageFirst,Integer ageSecond,String nativePlace){  
  13.        // TourGroup tg = tourGroupService.findByGroupCode(groupCode);  
  14.        String url = request.getSession().getServletContext().getRealPath("/") + "/download/"  
  15.                + System.currentTimeMillis() + ".doc";  
  16.        String realPath = request.getSession().getServletContext().getRealPath("/template/guestInsurances.docx");  
  17.        WordReporter export = new WordReporter(realPath);  
  18.        try {  
  19.            export.init();  
  20.        } catch (IOException e) {  
  21.            e.printStackTrace();  
  22.        }  
  23.   
  24.        GroupOrder vo = new GroupOrder();  
  25.        vo.setPage(page);  
  26.        vo.setPageSize(pageSize);  
  27.        vo.setStartTime(startTime);  
  28.        vo.setEndTime(endTime);  
  29.        vo.setRemark(remark);  
  30.        vo.setGuestName(guestName);  
  31.        vo.setOrderNo(orderMode);  
  32.        vo.setGroupCode(groupCode);  
  33.        vo.setSaleOperatorIds(saleOperatorIds);  
  34.        vo.setOrgIds(orgIds);  
  35.        vo.setOperType(Integer.valueOf(operType));  
  36.        vo.setReceiveMode(receiveMode);  
  37.        vo.setOrgNames(orgNames);  
  38.        vo.setSaleOperatorName(saleOperatorName);  
  39.        vo.setSupplierName(supplierName);  
  40.        vo.setGender(gender);  
  41.        vo.setAgeFirst(ageFirst);  
  42.        vo.setAgeSecond(ageSecond);  
  43.        vo.setNativePlace(nativePlace);  
  44.        
  45.        if (StringUtils.isBlank(vo.getSaleOperatorIds()) && StringUtils.isNotBlank(vo.getOrgIds())) {  
  46.            Set<Integer> set = new HashSet<Integer>();  
  47.            String[] orgIdArr = vo.getOrgIds().split(",");  
  48.            for (String orgIdStr : orgIdArr) {  
  49.                set.add(Integer.valueOf(orgIdStr));  
  50.            }  
  51.            set = platformEmployeeService.getUserIdListByOrgIdList(WebUtils.getCurBizId(request), set);  
  52.            String salesOperatorIds = "";  
  53.            for (Integer usrId : set) {  
  54.                salesOperatorIds += usrId + ",";  
  55.            }  
  56.            if (!salesOperatorIds.equals("")) {  
  57.                vo.setSaleOperatorIds(salesOperatorIds.substring(0, salesOperatorIds.length() - 1));  
  58.            }  
  59.        }  
  60.        PageBean pageBean = new PageBean();  
  61.        if (page == null) {  
  62.            pageBean.setPage(1);  
  63.        } else {  
  64.            pageBean.setPage(page);  
  65.        }  
  66.        if (pageSize == null) {  
  67.            pageBean.setPageSize(10000);  
  68.        } else {  
  69.            pageBean.setPageSize(10000);  
  70.        }  
  71.        pageBean.setParameter(vo);  
  72.        pageBean.setPage(page);  
  73.        pageBean = groupOrderService.selectGroupOrderGuestListPage(pageBean, WebUtils.getCurBizId(request),  
  74.                WebUtils.getDataUserIdSet(request),userRightType);  
  75.   
  76.        List<Map<String, String>> guestList = new ArrayList<Map<String, String>>();  
  77.        Map<String, String> map = null, mapTemp = null;  
  78.        int index = 0;  
  79.        if (pageBean.getResult() != null && pageBean.getResult().size() > 0) {  
  80.            int firstSum = pageBean.getResult().size() / 2;  
  81.            for (int i = 0; i < firstSum; i++) {  
  82.                map = (HashMap) pageBean.getResult().get(i);  
  83.                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
  84.                mapTemp = new HashMap<String, String>();  
  85.                mapTemp.put("number", index + 1 + "");  
  86.                mapTemp.put("code", (String) map.get("receive_mode"));  
  87.                mapTemp.put("guestName", (String) map.get("name"));  
  88.                mapTemp.put("cerNum", (String) map.get("certificate_num"));  
  89.                mapTemp.put("snumber""");  
  90.                mapTemp.put("scode""");  
  91.                mapTemp.put("sguestName""");  
  92.                mapTemp.put("scerNum""");  
  93.                guestList.add(mapTemp);  
  94.                index++;  
  95.            }  
  96.   
  97.            for (int i = firstSum; i < pageBean.getResult().size(); i++) {  
  98.                map = (HashMap) pageBean.getResult().get(i);  
  99.                mapTemp = isAddNewRow(guestList);  
  100.                if (mapTemp == null) {  
  101.                    mapTemp = new HashMap<String, String>();  
  102.                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
  103.                    mapTemp.put("number", index + 1 + "");  
  104.                    mapTemp.put("code", (String) map.get("receive_mode"));  
  105.                    mapTemp.put("guestName", (String) map.get("name"));  
  106.                    mapTemp.put("cerNum", (String) map.get("certificate_num"));  
  107.                    guestList.add(mapTemp);  
  108.                } else {  
  109.                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");  
  110.                    mapTemp.put("snumber", index + 1 + "");  
  111.                    mapTemp.put("scode", (String) map.get("receive_mode"));  
  112.                    mapTemp.put("sguestName", (String) map.get("name"));  
  113.                    mapTemp.put("scerNum", (String) map.get("certificate_num"));  
  114.                }  
  115.                index++;  
  116.            }  
  117.   
  118.        }  
  119.   
  120.        Map<String, Object> mapHeader = new HashMap<String, Object>();  
  121.        mapHeader.put("company", WebUtils.getCurBizInfo(request).getName()); // 当前单位  
  122.        mapHeader.put("operator", WebUtils.getCurUser(request).getName());  
  123.        mapHeader.put("printTime", DateUtils.format(new Date()));  
  124.        mapHeader.put("opTel", WebUtils.getCurUser(request).getMobile());  
  125.        mapHeader.put("groupCode""");  
  126.        mapHeader.put("person", String.valueOf(pageBean.getTotalCount()));  
  127.        mapHeader.put("guide""");  
  128.        mapHeader.put("departureDate""");  
  129.        mapHeader.put("maxDay""");  
  130.        mapHeader.put("numDay""");  
  131.   
  132.        try {  
  133.            export.export(mapHeader, 0);  
  134.            export.export(guestList, 1);  
  135.            export.generate(url);  
  136.        } catch (Exception e) {  
  137.            e.printStackTrace();  
  138.        }  
  139.        return url;  
  140.    }  

到这里代码就写完了,点击【导出Word】按钮就会下载了。如图所示:


下载好后直接打开即可。Word部分内容如下:



.
0
0